9 - Advanced Design and Programming [ID:12421]
50 von 421 angezeigt

Passphillance Eher referring place

Moment von Crunch

Schritten oder ein Schichten gegen Kartmericen

queer und Royal

itten oder an même h explosion

aus der

Clock

ein

Le Ding

suis

tool

und

vom

nicht vermeiden und werden auch zur Laufzeit im Betrieb auftreten, müssen wir uns auch um jene

Situation kümmern, wo eine Software zum Beispiel sicherheitskritisch etwas betreibt und dann nicht

einfach wegen eines Fehlers crashen darf, sondern wir müssen als Teil der normalen Programmierung

mit aufnehmen, dass man eben auch Fehler erlebt und dass man in eine entsprechende Fehlerbehandlung

gehen sollte. Hier sehen Sie ein Beispiel für etwas, was ich als schlechten Code,

insbesondere im Hinblick auf die Fehlerbehandlung sehen würde. Schauen wir also mal drauf,

was hier geschieht und identifizieren Sachen, die vielleicht Ihnen schon so intuitiv aufstoßen.

Wir sehen hier also eine Methode readInt. Offensichtlich wird wohl ein Integer aus einer

Datei gelesen. Diese Methode gibt den Integer zurück, vermutlich das Ergebnis, kann auch

eine parseException, also eine Ausnahme werfen. Was sehen Sie denn hier, was vielleicht nicht

ideal oder nicht so guter Code wäre? Also es gibt hier gleich zu Beginn den Versuch,

halt die Daten zu lesen und Sie sagen halt, hier sind schon mal zwei schlechte Programmierpraktiken,

nämlich einmal alles an Exception aufzufangen und dann den offenkundigen vorliegenden Fehler

oder Ausnahme, über die man hier benachrichtigt wird, einfach zu ignorieren mittels doNothing.

Sicherlich richtig, in sehr gutem Code müsste man hier differenzieren, was es denn für Probleme

gibt und sie ganz bestimmt nicht unter den Tisch fallen lassen. Okay, dann gibt es dann

auch noch den Bezug zu die Methonsignatur, macht gar keinen Sinn, weil hier alles abgefangen wird.

Was fällt Ihnen noch auf? Man hat hier also eine Fehlerbehandlung innerhalb der Methode,

das an sich ist noch nicht so schlecht. Die Frage ist nichtsdestotrotz, wird das lokal behandelt

oder muss der Kontext benachrichtigt werden über den Fehler? Das ist also debattierbar. Sicherlich

schlecht ist hier so ein klassisches System auf Printline, das macht man vielleicht beim Debugging,

wenn man initial was testet, aber in echten Produktivcode nutzt man erstens einen Logger,

zweitens nimmt man sicherlich mal mehr Informationen, als irgendwas hat nicht funktioniert und dann ist

auch wieder die Frage, was man hier noch als drittes nennt, Fehlercode, auch ein Minus 1,

also noch nicht mal inhaltlich benannt und identifiziert, sondern einfach nur irgendwas

ist falsch, dafür steht Minus 1 häufig zurückgibt. Während unklar ist, ist Minus 1 ein valider

Rückgabewert oder nicht. Vermutlich ist hier gedacht, steht aber nirgendswo, dass nur Werte 1 und 0,

also größer 1, größer gleich 1 gültige Rückgabewerte sind. Genau, so weit Sachen,

die hier nicht so richtig gut sind. Und das sieht man als Programmierer, da ist man auch genervt und

wir wollen uns heute halt anschauen, wie man das eigentlich sauberer und anders strukturieren sollte.

Also was hatte ich hier? Aus der Perspektive Design by Contract, Vorbedingungen sind unklar,

keine Zusicherung, keine Klassenvariable. Eine Bacher-Variable war da, die überhaupt nicht

gebraucht wurde. Dann gab es eine Ressource, die genutzt wird, die aber nicht aufgeräumt wird.

Ich glaube, das war hier der Fall Input Stream, der wird nicht wieder entfernt. Es gibt es Garbage

Collection in Java, aber es ist nicht klar, ob zusätzlich dranhängende Ressourcen nicht

wieder freigegeben werden müssen. Garbage Collection kann auch nicht alles sauber ausführen.

Und dann eben spezifisch für die Fehlerbehandlung. Der Rückgabewert war halt überladen mit dem minus

Teil einer Videoserie :

Zugänglich über

Offener Zugang

Dauer

01:00:46 Min

Aufnahmedatum

2019-12-02

Hochgeladen am

2019-12-03 13:29:03

Sprache

de-DE

Tags

interface
Einbetten
Wordpress FAU Plugin
iFrame
Teilen